/*
 * SimpleModal 1.4.1 - jQuery Plugin
 * http://www.ericmmartin.com/projects/simplemodal/
 * Copyright (c) 2010 Eric Martin (http://twitter.com/ericmmartin)
 * Dual licensed under the MIT and GPL licenses
 * Revision: $Id: jquery.simplemodal.js 261 2010-11-05 21:16:20Z emartin24 $
 */
(function(d) {
    var k = d.browser.msie && parseInt(d.browser.version) === 6 && typeof window.XMLHttpRequest !== "object",m = d.browser.msie && parseInt(d.browser.version) === 7,l = null,f = [];
    d.modal = function(a, b) {
        return d.modal.impl.init(a, b)
    };
    d.modal.close = function() {
        d.modal.impl.close()
    };
    d.modal.focus = function(a) {
        d.modal.impl.focus(a)
    };
    d.modal.setContainerDimensions = function() {
        d.modal.impl.setContainerDimensions()
    };
    d.modal.setPosition = function() {
        d.modal.impl.setPosition()
    };
    d.modal.update = function(a, b) {
        d.modal.impl.update(a,
            b)
    };
    d.fn.modal = function(a) {
        return d.modal.impl.init(this, a)
    };
    d.modal.defaults = {appendTo:"body",focus:true,opacity:50,overlayId:"simplemodal-overlay",overlayCss:{},containerId:"simplemodal-container",containerCss:{},dataId:"simplemodal-data",dataCss:{},minHeight:null,minWidth:null,maxHeight:null,maxWidth:null,autoResize:false,autoPosition:true,zIndex:1E3,close:true,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:"simplemodal-close",escClose:true,overlayClose:false,position:null,
        persist:false,modal:true,onOpen:null,onShow:null,onClose:null};
    d.modal.impl = {d:{},init:function(a, b) {
        var c = this;
        if (c.d.data)return false;
        l = d.browser.msie && !d.boxModel;
        c.o = d.extend({}, d.modal.defaults, b);
        c.zIndex = c.o.zIndex;
        c.occb = false;
        if (typeof a === "object") {
            a = a instanceof jQuery ? a : d(a);
            c.d.placeholder = false;
            if (a.parent().parent().size() > 0) {
                a.before(d("<span></span>").attr("id", "simplemodal-placeholder").css({display:"none"}));
                c.d.placeholder = true;
                c.display = a.css("display");
                if (!c.o.persist)c.d.orig =
                    a.clone(true)
            }
        } else if (typeof a === "string" || typeof a === "number")a = d("<div></div>").html(a); else {
            alert("SimpleModal Error: Unsupported data type: " + typeof a);
            return c
        }
        c.create(a);
        c.open();
        d.isFunction(c.o.onShow) && c.o.onShow.apply(c, [c.d]);
        return c
    },create:function(a) {
        var b = this;
        f = b.getDimensions();
        if (b.o.modal && k)b.d.iframe = d('<iframe src="javascript:false;"></iframe>').css(d.extend(b.o.iframeCss, {display:"none",opacity:0,position:"fixed",height:f[0],width:f[1],zIndex:b.o.zIndex,top:0,left:0})).appendTo(b.o.appendTo);
        b.d.overlay = d("<div></div>").attr("id", b.o.overlayId).addClass("simplemodal-overlay").css(d.extend(b.o.overlayCss, {display:"none",opacity:b.o.opacity / 100,height:b.o.modal ? f[0] : 0,width:b.o.modal ? f[1] : 0,position:"fixed",left:0,top:0,zIndex:b.o.zIndex + 1})).appendTo(b.o.appendTo);
        b.d.container = d("<div></div>").attr("id", b.o.containerId).addClass("simplemodal-container").css(d.extend(b.o.containerCss, {display:"none",position:"fixed",zIndex:b.o.zIndex + 2})).append(b.o.close && b.o.closeHTML ? d(b.o.closeHTML).addClass(b.o.closeClass) :
            "").appendTo(b.o.appendTo);
        b.d.wrap = d("<div></div>").attr("tabIndex", -1).addClass("simplemodal-wrap").css({height:"100%",outline:0,width:"100%"}).appendTo(b.d.container);
        b.d.data = a.attr("id", a.attr("id") || b.o.dataId).addClass("simplemodal-data").css(d.extend(b.o.dataCss, {display:"none"})).appendTo("body");
        b.setContainerDimensions();
        b.d.data.appendTo(b.d.wrap);
        if (k || l)b.fixIE()
    },bindEvents:function() {
        var a = this;
        d("." + a.o.closeClass).bind("click.simplemodal", function(b) {
            b.preventDefault();
            a.close()
        });
        a.o.modal && a.o.close && a.o.overlayClose && a.d.overlay.bind("click.simplemodal", function(b) {
            b.preventDefault();
            a.close()
        });
        d(document).bind("keydown.simplemodal", function(b) {
            if (a.o.modal && b.keyCode === 9)a.watchTab(b); else if (a.o.close && a.o.escClose && b.keyCode === 27) {
                b.preventDefault();
                a.close()
            }
        });
        d(window).bind("resize.simplemodal", function() {
            f = a.getDimensions();
            a.o.autoResize ? a.setContainerDimensions() : a.o.autoPosition && a.setPosition();
            if (k || l)a.fixIE(); else if (a.o.modal) {
                a.d.iframe && a.d.iframe.css({height:f[0],
                    width:f[1]});
                a.d.overlay.css({height:f[0],width:f[1]})
            }
        })
    },unbindEvents:function() {
        d("." + this.o.closeClass).unbind("click.simplemodal");
        d(document).unbind("keydown.simplemodal");
        d(window).unbind("resize.simplemodal");
        this.d.overlay.unbind("click.simplemodal")
    },fixIE:function() {
        var a = this,b = a.o.position;
        d.each([a.d.iframe || null,!a.o.modal ? null : a.d.overlay,a.d.container], function(c, h) {
            if (h) {
                var g = h[0].style;
                g.position = "absolute";
                if (c < 2) {
                    g.removeExpression("height");
                    g.removeExpression("width");
                    g.setExpression("height",
                        'document.body.scrollHeight > document.body.clientHeight ? document.body.scrollHeight : document.body.clientHeight + "px"');
                    g.setExpression("width", 'document.body.scrollWidth > document.body.clientWidth ? document.body.scrollWidth : document.body.clientWidth + "px"')
                } else {
                    var e;
                    if (b && b.constructor === Array) {
                        c = b[0] ? typeof b[0] === "number" ? b[0].toString() : b[0].replace(/px/, "") : h.css("top").replace(/px/, "");
                        c = c.indexOf("%") === -1 ? c + ' + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"' :
                            parseInt(c.replace(/%/, "")) + ' * ((document.documentElement.clientHeight || document.body.clientHeight) / 100) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"';
                        if (b[1]) {
                            e = typeof b[1] === "number" ? b[1].toString() : b[1].replace(/px/, "");
                            e = e.indexOf("%") === -1 ? e + ' + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"' : parseInt(e.replace(/%/, "")) + ' * ((document.documentElement.clientWidth || document.body.clientWidth) / 100) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"'
                        }
                    } else {
                        c =
                            '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"';
                        e = '(document.documentElement.clientWidth || document.body.clientWidth) / 2 - (this.offsetWidth / 2) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"'
                    }
                    g.removeExpression("top");
                    g.removeExpression("left");
                    g.setExpression("top",
                        c);
                    g.setExpression("left", e)
                }
            }
        })
    },focus:function(a) {
        var b = this;
        a = a && d.inArray(a, ["first","last"]) !== -1 ? a : "first";
        var c = d(":input:enabled:visible:" + a, b.d.wrap);
        setTimeout(function() {
            c.length > 0 ? c.focus() : b.d.wrap.focus()
        }, 10)
    },getDimensions:function() {
        var a = d(window);
        return[d.browser.opera && d.browser.version > "9.5" && d.fn.jquery < "1.3" || d.browser.opera && d.browser.version < "9.5" && d.fn.jquery > "1.2.6" ? a[0].innerHeight : a.height(),a.width()]
    },getVal:function(a, b) {
        return a ? typeof a === "number" ? a : a === "auto" ? 0 :
            a.indexOf("%") > 0 ? parseInt(a.replace(/%/, "")) / 100 * (b === "h" ? f[0] : f[1]) : parseInt(a.replace(/px/, "")) : null
    },update:function(a, b) {
        var c = this;
        if (!c.d.data)return false;
        c.d.origHeight = c.getVal(a, "h");
        c.d.origWidth = c.getVal(b, "w");
        c.d.data.hide();
        a && c.d.container.css("height", a);
        b && c.d.container.css("width", b);
        c.setContainerDimensions();
        c.d.data.show();
        c.o.focus && c.focus();
        c.unbindEvents();
        c.bindEvents()
    },setContainerDimensions:function() {
        var a = this,b = k || m,c = a.d.origHeight ? a.d.origHeight : d.browser.opera ?
            a.d.container.height() : a.getVal(b ? a.d.container[0].currentStyle.height : a.d.container.css("height"), "h");
        b = a.d.origWidth ? a.d.origWidth : d.browser.opera ? a.d.container.width() : a.getVal(b ? a.d.container[0].currentStyle.width : a.d.container.css("width"), "w");
        var h = a.d.data.outerHeight(true),g = a.d.data.outerWidth(true);
        a.d.origHeight = a.d.origHeight || c;
        a.d.origWidth = a.d.origWidth || b;
        var e = a.o.maxHeight ? a.getVal(a.o.maxHeight, "h") : null,i = a.o.maxWidth ? a.getVal(a.o.maxWidth, "w") : null;
        e = e && e < f[0] ? e : f[0];
        i = i && i <
            f[1] ? i : f[1];
        var j = a.o.minHeight ? a.getVal(a.o.minHeight, "h") : "auto";
        c = c ? a.o.autoResize && c > e ? e : c < j ? j : c : h ? h > e ? e : a.o.minHeight && j !== "auto" && h < j ? j : h : j;
        e = a.o.minWidth ? a.getVal(a.o.minWidth, "w") : "auto";
        b = b ? a.o.autoResize && b > i ? i : b < e ? e : b : g ? g > i ? i : a.o.minWidth && e !== "auto" && g < e ? e : g : e;
        a.d.container.css({height:c,width:b});
        a.d.wrap.css({overflow:h > c || g > b ? "auto" : "visible"});
        a.o.autoPosition && a.setPosition()
    },setPosition:function() {
        var a = this,b,c;
        b = f[0] / 2 - a.d.container.outerHeight(true) / 2;
        c = f[1] / 2 - a.d.container.outerWidth(true) /
            2;
        if (a.o.position && Object.prototype.toString.call(a.o.position) === "[object Array]") {
            b = a.o.position[0] || b;
            c = a.o.position[1] || c
        } else {
            b = b;
            c = c
        }
        a.d.container.css({left:c,top:b})
    },watchTab:function(a) {
        var b = this;
        if (d(a.target).parents(".simplemodal-container").length > 0) {
            b.inputs = d(":input:enabled:visible:first, :input:enabled:visible:last", b.d.data[0]);
            if (!a.shiftKey && a.target === b.inputs[b.inputs.length - 1] || a.shiftKey && a.target === b.inputs[0] || b.inputs.length === 0) {
                a.preventDefault();
                b.focus(a.shiftKey ? "last" :
                    "first")
            }
        } else {
            a.preventDefault();
            b.focus()
        }
    },open:function() {
        var a = this;
        a.d.iframe && a.d.iframe.show();
        if (d.isFunction(a.o.onOpen))a.o.onOpen.apply(a, [a.d]); else {
            a.d.overlay.show();
            a.d.container.show();
            a.d.data.show()
        }
        a.o.focus && a.focus();
        a.bindEvents()
    },close:function() {
        var a = this;
        if (!a.d.data)return false;
        a.unbindEvents();
        if (d.isFunction(a.o.onClose) && !a.occb) {
            a.occb = true;
            a.o.onClose.apply(a, [a.d])
        } else {
            if (a.d.placeholder) {
                var b = d("#simplemodal-placeholder");
                if (a.o.persist)b.replaceWith(a.d.data.removeClass("simplemodal-data").css("display",
                    a.display)); else {
                    a.d.data.hide().remove();
                    b.replaceWith(a.d.orig)
                }
            } else a.d.data.hide().remove();
            a.d.container.hide().remove();
            a.d.overlay.hide();
            a.d.iframe && a.d.iframe.hide().remove();
            setTimeout(function() {
                a.d.overlay.remove();
                a.d = {}
            }, 10)
        }
    }}
})(jQuery);
